package org.example.wu_and_dian.controller;
 
import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import org.example.wu_and_dian.annotation.TokenRequired;
import org.example.wu_and_dian.dto.request.DocumentRequest;
import org.example.wu_and_dian.dto.response.AjaxResult;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.ai.ollama.api.OllamaOptions;
import org.springframework.web.bind.annotation.*;

import static com.alibaba.fastjson.JSON.parseObject;

@RestController
public class OllamaController {
   @Resource
    private OllamaChatModel ollamaChatModel;

    @TokenRequired
    @PostMapping("/punc/getSplit")
    public AjaxResult getSplit(@RequestBody String selectedContent) {
        JSONObject jsonObject = parseObject(selectedContent);
        String msg = jsonObject.getString("selectedContent");

        // 使用建造者模式创建OllamaOptions
        OllamaOptions options = OllamaOptions.builder()
                .model("qwen2.5:3b")
                .temperature(0.4)
                .build();
        msg = "请为以下文本添加标点：\n" + msg+"，并直接输出标点完成后的内容，不用出现其他提示性语句。";
        // 构造Prompt，传入消息和配置选项
        Prompt prompt = new Prompt(msg, options);

        // 调用模型的call方法（或generate方法，视具体API而定）
        ChatResponse chatResponse = ollamaChatModel.call(prompt);

        // 返回结果
        String response =  chatResponse.getResult().getOutput().getContent();
        return AjaxResult.success("自动标点成功",response);

    }

    @TokenRequired
    @PostMapping("/cws/getCws")
    public AjaxResult getCws(@RequestBody String selectedContent) {
        JSONObject jsonObject = parseObject(selectedContent);
        String msg = jsonObject.getString("selectedContent");

        // 使用建造者模式创建OllamaOptions
        OllamaOptions options = OllamaOptions.builder()
                .model("qwen2.5:3b")
                .temperature(0.4)
                .build();
        msg = "请为以下文本进行分词：\n"+ msg +"\n分词后，词与词之间用空格分开，而且不要有任何其他内容";
        // 构造Prompt，传入消息和配置选项
        Prompt prompt = new Prompt(msg, options);

        // 调用模型的call方法（或generate方法，视具体API而定）
        ChatResponse chatResponse = ollamaChatModel.call(prompt);

        // 返回结果
        String response =  chatResponse.getResult().getOutput().getContent();
        return AjaxResult.success("自动分词成功",response);

    }
}